#ifndef __IFILESYSTEM_H__
#define __IFILESYSTEM_H__

#include "CTypes.h"
#include "IFile.h"
#include "IImage.h"
#include "IIOFile.h"

class IFileSystem
{
public:
	IFileSystem()			{}
	virtual ~IFileSystem()	{}

	virtual bool SetWorkingDirectoryToStartDirectory()				= 0;
	virtual bool ReadActualDirectory()								= 0;
	virtual stringc GetWorkingDirectory()							= 0;

	virtual IImage *GetImage(stringc Name)							= 0;

	virtual IIOFile *GetFile(stringc Name)							= 0;
	virtual IIOFile *GetBaseFile()									= 0;
	virtual bool ReadAttachedFileSystem(u8 *Data,stringc FileName)	= 0;
};

POWERLIBRARYENGINE_API IFileSystem *GetFileSystem();
POWERLIBRARYENGINE_API void DeleteFileSystem();
void SetFileSystem(IFileSystem *nv);
#define PLE_FileSystem		GetFileSystem()

#endif
